From e51a98d1846914137ff6aad14bf1c4435a66f3ab Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 26 Oct 2020 01:07:54 -0400 Subject: [PATCH] docs: Add GtkDrawingArea to the gallery --- docs/reference/gtk/images/drawingarea.png | Bin 0 -> 8303 bytes docs/reference/gtk/images/glarea.png | Bin 3016 -> 4465 bytes docs/reference/gtk/meson.build | 1 + docs/reference/gtk/visual_index.xml | 1 + docs/tools/widgets.c | 188 +++++++++++++++++++++- 5 files changed, 188 insertions(+), 2 deletions(-) create mode 100644 docs/reference/gtk/images/drawingarea.png diff --git a/docs/reference/gtk/images/drawingarea.png b/docs/reference/gtk/images/drawingarea.png new file mode 100644 index 0000000000000000000000000000000000000000..7ab304522b87ec5b2fcc340737b89c5b7240ba53 GIT binary patch literal 8303 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 BT#f($ literal 0 HcmV?d00001 diff --git a/docs/reference/gtk/images/glarea.png b/docs/reference/gtk/images/glarea.png index 1325afcab05d0cf8b2f36ef11cdf15cd987b30a4..50bf77c0629f6327f0db8089bc64f250760342e4 100644 GIT binary patch literal 4465 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 TGclX-hXO8`S(?5(hrIV6&Ui_q literal 3016 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 + diff --git a/docs/tools/widgets.c b/docs/tools/widgets.c index c99cef1d06..3cb08a3410 100644 --- a/docs/tools/widgets.c +++ b/docs/tools/widgets.c @@ -1497,6 +1497,7 @@ create_flow_box (void) static WidgetInfo * create_gl_area (void) { + GtkWidget *vbox; WidgetInfo *info; GtkWidget *widget; GtkWidget *gears; @@ -1513,12 +1514,15 @@ create_gl_area (void) gtk_style_context_add_provider (gtk_widget_get_style_context (gears), GTK_STYLE_PROVIDER (provider), 800); g_object_unref (provider); + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 3); gtk_widget_set_halign (widget, GTK_ALIGN_FILL); gtk_widget_set_valign (widget, GTK_ALIGN_FILL); + gtk_box_append (GTK_BOX (vbox), widget); + gtk_box_append (GTK_BOX (vbox), gtk_label_new ("GL Area")); - add_margin (widget); + add_margin (vbox); - info = new_widget_info ("glarea", widget, MEDIUM); + info = new_widget_info ("glarea", vbox, MEDIUM); return info; } @@ -1741,6 +1745,185 @@ create_shortcuts_window (void) return new_widget_info ("shortcuts-window", overlay, ASIS); } +static void +oval_path (cairo_t *cr, + double xc, double yc, + double xr, double yr) +{ + cairo_save (cr); + + cairo_translate (cr, xc, yc); + cairo_scale (cr, 1.0, yr / xr); + cairo_move_to (cr, xr, 0.0); + cairo_arc (cr, + 0, 0, + xr, + 0, 2 * G_PI); + cairo_close_path (cr); + + cairo_restore (cr); +} + +static void +fill_checks (cairo_t *cr, + int x, int y, + int width, int height) +{ + int i, j; + +#define CHECK_SIZE 16 + + cairo_rectangle (cr, x, y, width, height); + cairo_set_source_rgb (cr, 0.4, 0.4, 0.4); + cairo_fill (cr); + + /* Only works for CHECK_SIZE a power of 2 */ + j = x & (-CHECK_SIZE); + + for (; j < height; j += CHECK_SIZE) + { + i = y & (-CHECK_SIZE); + for (; i < width; i += CHECK_SIZE) + if ((i / CHECK_SIZE + j / CHECK_SIZE) % 2 == 0) + cairo_rectangle (cr, i, j, CHECK_SIZE, CHECK_SIZE); + } + + cairo_set_source_rgb (cr, 0.7, 0.7, 0.7); + cairo_fill (cr); + +#undef CHECK_SIZE +} + +static void +draw_3circles (cairo_t *cr, + double xc, double yc, + double radius, + double alpha) +{ + double subradius = radius * (2 / 3. - 0.1); + + cairo_set_source_rgba (cr, 1., 0., 0., alpha); + oval_path (cr, + xc + radius / 3. * cos (G_PI * (0.5)), + yc - radius / 3. * sin (G_PI * (0.5)), + subradius, subradius); + cairo_fill (cr); + + cairo_set_source_rgba (cr, 0., 1., 0., alpha); + oval_path (cr, + xc + radius / 3. * cos (G_PI * (0.5 + 2/.3)), + yc - radius / 3. * sin (G_PI * (0.5 + 2/.3)), + subradius, subradius); + cairo_fill (cr); + + cairo_set_source_rgba (cr, 0., 0., 1., alpha); + oval_path (cr, + xc + radius / 3. * cos (G_PI * (0.5 + 4/.3)), + yc - radius / 3. * sin (G_PI * (0.5 + 4/.3)), + subradius, subradius); + cairo_fill (cr); +} + +static void +groups_draw (GtkDrawingArea *darea, + cairo_t *cr, + int width, + int height, + gpointer data) +{ + cairo_surface_t *overlay, *punch, *circles; + cairo_t *overlay_cr, *punch_cr, *circles_cr; + + /* Fill the background */ + double radius = 0.5 * (width < height ? width : height) - 10; + double xc = width / 2.; + double yc = height / 2.; + + overlay = cairo_surface_create_similar (cairo_get_target (cr), + CAIRO_CONTENT_COLOR_ALPHA, + width, height); + + punch = cairo_surface_create_similar (cairo_get_target (cr), + CAIRO_CONTENT_ALPHA, + width, height); + + circles = cairo_surface_create_similar (cairo_get_target (cr), + CAIRO_CONTENT_COLOR_ALPHA, + width, height); + + fill_checks (cr, 0, 0, width, height); + + /* Draw a black circle on the overlay + */ + overlay_cr = cairo_create (overlay); + cairo_set_source_rgb (overlay_cr, 0., 0., 0.); + oval_path (overlay_cr, xc, yc, radius, radius); + cairo_fill (overlay_cr); + + /* Draw 3 circles to the punch surface, then cut + * that out of the main circle in the overlay + */ + punch_cr = cairo_create (punch); + draw_3circles (punch_cr, xc, yc, radius, 1.0); + cairo_destroy (punch_cr); + + cairo_set_operator (overlay_cr, CAIRO_OPERATOR_DEST_OUT); + cairo_set_source_surface (overlay_cr, punch, 0, 0); + cairo_paint (overlay_cr); + + /* Now draw the 3 circles in a subgroup again + * at half intensity, and use OperatorAdd to join up + * without seams. + */ + circles_cr = cairo_create (circles); + + cairo_set_operator (circles_cr, CAIRO_OPERATOR_OVER); + draw_3circles (circles_cr, xc, yc, radius, 0.5); + cairo_destroy (circles_cr); + + cairo_set_operator (overlay_cr, CAIRO_OPERATOR_ADD); + cairo_set_source_surface (overlay_cr, circles, 0, 0); + cairo_paint (overlay_cr); + + cairo_destroy (overlay_cr); + + cairo_set_source_surface (cr, overlay, 0, 0); + cairo_paint (cr); + + cairo_surface_destroy (overlay); + cairo_surface_destroy (punch); + cairo_surface_destroy (circles); +} + + +static WidgetInfo * +create_drawing_area (void) +{ + GtkWidget *vbox; + WidgetInfo *info; + GtkWidget *widget; + GtkWidget *da; + + widget = gtk_frame_new (NULL); + da = gtk_drawing_area_new (); + gtk_widget_set_size_request (da, 96, 96); + gtk_drawing_area_set_draw_func (GTK_DRAWING_AREA (da), groups_draw, NULL, NULL); + gtk_frame_set_child (GTK_FRAME (widget), da); + + vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); + gtk_widget_set_halign (widget, GTK_ALIGN_FILL); + gtk_widget_set_valign (widget, GTK_ALIGN_FILL); + + gtk_box_append (GTK_BOX (vbox), widget); + gtk_box_append (GTK_BOX (vbox), gtk_label_new ("Drawing Area")); + + add_margin (vbox); + + info = new_widget_info ("drawingarea", vbox, MEDIUM); + + return info; +} + GList * get_all_widgets (void) { @@ -1814,6 +1997,7 @@ get_all_widgets (void) retval = g_list_prepend (retval, create_popover ()); retval = g_list_prepend (retval, create_menu ()); retval = g_list_prepend (retval, create_shortcuts_window ()); + retval = g_list_prepend (retval, create_drawing_area()); return retval; } -- 2.30.2